// 管理当前登录用户的用户路由
//  用户路由：
//    静态路由： 404 & login & 首页
//    权限路由：当前登录用户的权限标识对应的动态路由

// 导入静态路由
import { constantRoutes, syncRoutes } from '@/router'

const state = {
  // 保存用户路由（设置一个默认的静态路由）
  routes: [...constantRoutes]
}
const mutations = {
  // 设置用户路由
  //  payload：获取的权限路由
  setRoutes(state, payload) {
    // 用户路由：静态路由 & 权限路由
    state.routes = [...constantRoutes, ...payload]
  }
}
const actions = {
  // 得到权限路由，将权限路由赋值给 routes
  // payload当前登录用户的权限标识
  getRoutes(context, payload) {
    // 任务：根据当前登录用户的权限标识去动态路由中得到对应的路由对象
    // 得到的这些路由对象就是权限路由
    // 遍历权限标识：(filter 从数组中得到满足条件的元素)
    const resArr = syncRoutes.filter((item) => {
      // 去掉 item 中 path 属性的 /
      const path = item.path.split('/')[1]
      // 判断 path 在 payload（权限标识）中是否存在
      return payload.includes(path)
    })
    // resArr：就是当前登录用户的权限路由
    // 将权限路由赋值给用户路由
    context.commit('setRoutes', resArr)
    // 埋下一个伏笔，后面会用到
    return resArr
  }
}

export default {
  namespaced: true,
  state,
  mutations,
  actions
}
